package com.mezz.bones.framework.crypto.util;

import org.jasypt.encryption.pbe.StandardPBEStringEncryptor;

/**
 * Jasypt 加密解密工具类
 * 
 * @Author: zhuang
 * @Date: 2024/17/6 17:33
 * @Description: 提供字符串加密解密功能，支持配置文件敏感信息加密
 * @Version: 1.0
 **/
public class JasyptEncryptionUtil {

    /**
     * 加密字符串
     * 
     * @param input 待加密的明文
     * @param secret 加密密钥
     * @return 加密后的密文
     */
    public static String encrypt(String input, String secret) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setPassword(secret);  // 设置加密密钥
        return encryptor.encrypt(input);
    }

    /**
     * 解密字符串
     * 
     * @param encryptedInput 待解密的密文
     * @param secret 解密密钥
     * @return 解密后的明文
     */
    public static String decrypt(String encryptedInput, String secret) {
        StandardPBEStringEncryptor encryptor = new StandardPBEStringEncryptor();
        encryptor.setPassword(secret);  // 设置解密密钥
        return encryptor.decrypt(encryptedInput);
    }

    /**
     * 测试方法
     */
    public static void main(String[] args) {
        String plainText = "123456";  //原文

        //生产加密秘钥使用-Djasypt.encryptor.password=1717 环境变量指定
        String encryptedText = encrypt(plainText, "test");
        System.out.println("Encrypted text: " + encryptedText);

        // 解密测试
        String decryptedText = decrypt(encryptedText, "test");
        System.out.println("Decrypted text: " + decryptedText);
    }
}